home *** CD-ROM | disk | FTP | other *** search
- Freeing Windows Resources on the fly in Delphi
-
-
- Here is a fix for the out of resources problem many of us have
- experienced when using Delphi to create a program with a large
- number of controls (several hundred).
-
- To illustrate the problem, I created a test program (RSTEST1)
- with four forms. Each form has a panel and one or two buttons.
- Forms 2 and 3 also have a TTabSet and a TNotebook while form 4
- has a TTabbedNotebook. The notebooks and tabbed notebook each
- have 4 pages, one blank and the others with many controls.
-
- If you run the program and cycle through all the forms and tabs
- while running a resource monitoring program such as Dr. Bob's
- RESMON available in the libraries, you will see a large
- percentage of your resources being consumed.
-
- I wrote a unit, FREERES.PAS which contains a procedure named
- FreeResources which takes a TWinControl as its handle. When
- called, it causes the VCL to free the resources used by that
- control and its descendants. Note that if the controls were
- visible they will disappear. When you cause them to be shown
- again, the resources will be reallocated by the VCL.
-
- The second sample program, RESTEST2, has several examples of
- using FreeResources on forms, notebook pages, and tabbed notebook
- pages. Form 3 frees the resources after another page or form has
- been displayed, while the other forms do the reverse: free the
- resources of the visible page or form then show the new one.
- This latter method causes more of a flicker on slow machines
- while the former method temporarily consumes more resources.
- Take your pick.
-
- One thing you need to watch out for, it only works for controls
- which never receive messages when they are not visible. I guess
- if someone used TWinControl or TCustomControl to derive a, for
- example, Winsock component which does not really need to be
- visible but needs a windows handle, you could run into problems.
- I suggest testing it thoroughly in your application before
- delivering it to paying customers! Thanks to Don Hatlestad for
- pointing this out.
-
- I hope this helps, and I welcome any feedback either through the
- Delphi forum on Compuserve by E-mail: Compuserve 76012,3614 or
- Internet jseach@ix.netcom.com.
-
- Jim Seach
-